package cn.com.blueInfo.bpm.template.request;

import cn.com.blueInfo.bpm.common.request.BaseDTO;
import cn.com.blueInfo.bpm.common.request.BaseQueryDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * 流程附件管理表 接收参数机校验
 * @author suxch
 * @since 2025-08-24 01:41:15
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "流程附件管理 接收参数及校验")
public class FileDTO extends BaseDTO {

    /** 流程实例ID */
    @NotNull(message = "流程实例ID 不能为空")
    @Schema(description = "流程实例ID")
    private Long instanceId;
    /** 工作项ID */
    @NotNull(message = "工作项ID 不能为空")
    @Schema(description = "工作项ID")
    private Long workItemId;
    /** 文件名 */
    @NotBlank(message = "文件名 不能为空")
    @Schema(description = "文件名")
    private String fileName;
    /** 文件存储路径 */
    @NotBlank(message = "文件存储路径 不能为空")
    @Schema(description = "文件存储路径")
    private String filePath;
    /** 文件大小（单位：字节） */
    @NotNull(message = "文件大小 不能为空")
    @Schema(description = "文件大小（单位：字节）")
    private Long fileSize;
    /** 文件类型 */
    @NotBlank(message = "文件类型 不能为空")
    @Schema(description = "文件类型")
    private String fileType;
    /** 上传人ID */
    @NotNull(message = "上传人ID 不能为空")
    @Schema(description = "上传人ID")
    private Long uploadUserId;
    /** 上传时间 */
    @NotNull(message = "上传时间 不能为空")
    @Schema(description = "上传时间")
    private LocalDateTime uploadTime;

    /**
     * 流程附件管理 接收分页查询参数
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "流程附件管理 接收分页查询参数")
    public static class QueryDTO extends BaseQueryDTO {

        /** 流程实例ID */
        @Schema(description = "流程实例ID")
        private Long instanceId;
        /** 工作项ID */
        @Schema(description = "工作项ID")
        private Long workItemId;
        /** 文件名 */
        @Schema(description = "文件名")
        private String fileName;
        /** 文件存储路径 */
        @Schema(description = "文件存储路径")
        private String filePath;
        /** 文件大小（单位：字节） */
        @Schema(description = "文件大小（单位：字节）")
        private Long fileSize;
        /** 文件类型 */
        @Schema(description = "文件类型")
        private String fileType;
        /** 上传人ID */
        @Schema(description = "上传人ID")
        private Long uploadUserId;
        /** 上传时间 */
        @Schema(description = "上传时间")
        private LocalDateTime uploadTime;

    }

    /**
     * 流程附件管理 接收部分更新参数及校验
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "流程附件管理 接收部分更新参数及校验")
    public static class UpdatePartialDTO extends BaseDTO {}

}